﻿using ComputationalCore.Impl.RandomGenerator.Enum;

namespace ComputationalCore.Interface.RandomGenerator.Factory
{
    public interface IRandomGeneratorFactory
    {
        /// <summary>
        /// Creates specific Generator with default parameters.
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        IRandomGenerator Create(RandomGeneratorType type);

        /// <summary>
        /// Creates specific Generator.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="varList">
        /// <para>UNIFORM: double left, double right</para>
        /// <para>POISON: double lambda</para>
        /// <para>ERLANG: double lambda, int order</para>
        /// <para>GAUSSIAN: double m, double sigma</para>
        /// </param>
        /// <returns></returns>
        IRandomGenerator Create(RandomGeneratorType type, params double[] varList);
    }
}
